مقدمة شاملة حول مؤشر انزياح الهيكل التراكمي (Cumulative Layout Shift – CLS) وآليات تحسينه
تمهيد: لماذا يحتل CLS صدارة مقاييس تجربة المستخدم الحديثة؟
منذ أن أعلنت «جوجل» في مايو 2020 عن دمج Core Web Vitals في خوارزميات ترتيب نتائج البحث، برز مؤشر CLS كأحد أهم معايير جودة الأداء؛ إذ يُقاس به مدى ثبات العناصر البصرية أثناء تحميل الصفحة. انخفاض CLS يعني صفحةً لا «تقفز» عناصرها أمام أعين الزائر، ويرتبط مباشرةً بمعدلات بقاء المستخدم، رضا المتصفح، وارتفاع التحويلات الرقمية. في عام 2025، ومع الانتشار الواسع لتقنيات التصميم المتجاوب وتكامل الإعلانات الديناميكية، صار تحسين CLS ضرورةً لا ترفاً.
أولاً: المفهوم التقني لـ CLS وكيفية احتسابه
1. تعريف مبسط
انزياح الهيكل التراكمي هو مجموع النقاط الجزئية لانزياحات غير متوقعة للعناصر داخل الإطار المرئي (Viewport) أثناء عمر الجلسة. يُحتسب لكل انزياحٍ ناتج مُعامل Impact Fraction (حجم المنطقة المنزاحة) مضروباً في Distance Fraction (المسافة النسبية التي قطعتها العناصر)، ثم تُجمَع القيم. الحد المقبول وفق توصيات «جوجل» هو ≤ 0.1، بينما يُعد 0.25 فأكثر تجربةً سيئة web.dev.
2. نقاط حسابية مهمة
| بند | الوصف | الصيغة |
|---|---|---|
| Impact Fraction | نسبة المساحة المتأثرة بالانزياح | Area of impact / Viewport area |
| Distance Fraction | أكبر مسافة قطعها أي عنصر % من الشاشة | Max move distance / Viewport height |
| CLS | مجموع (Impact × Distance) لكل انزياح في الإطار | Σ (Impact × Distance) |
ثانياً: العوامل الرئيسة التي ترفع قيمة CLS
-
الصور والفيديوهات غير المُعَرَّفة الأبعاد
غياب سماتwidthوheightيجعل المتصفح يحجز مساحةً صفريةً أولاً، ثم يضطر إلى إعادة التدفق بعدما يستلم الأبعاد الحقيقية. -
الوحدات الإعلانية وiframe الديناميكية
منصات الإعلانات غالباً ما تحقن وحدات لا تُحدَّد أبعادها مسبقاً، فتدفع المحتوى إلى أسفل. -
المحتوى المُولَّد بعد التفاعل
مثل أشرطة الإشعارات أو رسائل الـCookie التي تُحقَن في أعلى الصفحة. -
تأخر تحميل الخطوط (FOIT/FOUT)
عند استخدام خطوط Web Fonts دون استراتيجيات عرض متدرجة، تظهر النصوص أولاً بخط افتراضي ثم تتغير. -
التحولات CSS غير المتوقعة
تحريك عناصر موضوعة مسبقاً في تدفق المستند عبرanimationأوtransitionقبل انتهاء التحميل يزيد الانزياح DebugBear.
ثالثاً: خطوات عملية لتحسين CLS في موقعك
1. تحديد المشكلة بدقة
-
استخدام Lighthouse أو PageSpeed Insights للحصول على قيمة CLS لكل قالب URL.
-
تشغيل Performance Panel في DevTools وتفعيل «Layout Shift Regions» لرؤية أطر الانزياح باللون الأزرق.
-
استخدام أدوات مُتخصّصة مثل CLS Debugger أو Layout Shift GIF Generator للحصول على تسجيل مرئي للحركة.
2. تثبيت الأبعاد المعلَنة
-
أضف سمات
widthوheightلجميع صوروفيديوهات، أو استعملaspect-ratioفي CSS لضمان حجز الفراغ الملائم قبل التحميل. -
بالنسبة إلى الإعلانات: احجز حاوية مستقرة بأبعاد قصوى متوقعة واستخدم سمات
min-height.
3. تحميل الخطوط دون انزياح
-
اعتمد إستراتيجية
font-display: optionalأوswapلإظهار نص احتياطي أولاً ثم استبداله دون إخفاء المحتوى. -
استفد من
preloadلتقليل تأخر جلب ملفات الخطوط الرئيسة.
4. تجنُّب حقن محتوى مفاجئ
-
اجعل رسائل ملفات تعريف الارتباط تنزلق من الأسفل أو تتراكب تجاوزياً عبر
position: fixed; bottom:0بدلاً من دفع المحتوى. -
قم بتأجيل عناصر الطرف الثالث (مثل مربعات التعليقات) إلى ما بعد الـ
DOMContentLoaded.
5. إدارة التحولات والرسوم المتحركة
-
لا تُطلق أي انتقال CSS يحتوي على تغيُّر في
topأوleftقبل إتمام التحميل؛ بدِّلها بتحويلاتtransformالتي لا تعيد تدفق layout. -
ثبِّت الحالة الابتدائية للعناصر المتحركة باستخدام
will-change: transform.
6. تحسين تجربة الوصول البطيء للشبكة
-
فعِّل التحويل التدريجي للصور (Progressive JPEG/AVIF) لتقليل المفاجأة البصرية.
-
فعِّل
lazyload="true"للصور خارج الإطار المرئي مع حجز مساحة مسبقة باستخدامaspect-ratio.
رابعاً: استراتيجيات متقدمة لمطوّري الواجهات
1. استخدام Server‑Side Rendering مع Hydration تدريجي
يقلّل SSR زمن البصمة الأولى (FCP) ويحجز الهيكل الكامل قبل وصول جافاسكريبت، ما يحدّ من تغيُّر البنية عند الهيدرية المرحلية.
2. شبكات CDN ذكية مع Edge Workers
عبر حقن سمات الأبعاد للصور والإعلانات على مستوى الحافة (Edge)، تتجنّب تعديل الكود المصدري وتسرّع الاستجابة للمستخدمين العالميين.
3. مراقبة فورية عبر Layout Instability API
تتيح هذه الواجهة جمع أحداث الانزياح آنياً وإرسالها إلى خدمة تتبُّع (Analytics) لتوليد تحذيرات في الوقت الحقيقي عند تجاوز عتبة 0.1.
4. الأطر الحديثة الداعمة للأبعاد التلقائية
-
Next.js (منذ v13) يُنشئ عنصر
يفرض نسبة بُعد ثابتة تلقائياً. -
SvelteKit يضمّن معرّفات الأحجام في مرحلة البناء، مما يمنع الانزياح تماماً.
خامساً: دراسة حالة مختصرة
شركة e‑Store الشرق الأوسط عانت CLS=0.38. بعد مراجعة القوالب:
-
حجزوا مساحة ثابتة لإعلانات AdSense 300×250 على الأجهزة الصغيرة.
-
استبدلوا خطوط
@importبـ. -
طبّقوا صور WebP بـ
وأبعاد صريحة.
النتيجة خلال أسبوع: انخفاض CLS إلى 0.06، وزيادة زمن التفاعل الإيجابي +15 ٪ ومعدل تحويل سلة الشراء +11 ٪.
سادساً: توصيات ختامية لضمان ثبات طويل الأجل
-
دمج اختبار CLS ضمن خط أنابيب CI/CD لرفض أي دمج يزيد الانزياح فوق الحد.
-
تحديث مستودع الصور بفئات نسبية responsive تحجز الفراغ الصحيح لكل نقطة توقف.
-
تدريب فريق المحتوى على رفع الوسائط مع بيانات الأبعاد مدمجة في الـ CMS.
-
مراقبة التقارير الميدانية (Chrome UX Report) شهرياً، ولا تكتفِ بالاختبار المختبري.

